diff --git a/index.php b/index.php
index eb364ec..85042d4 100644
--- a/index.php
+++ b/index.php
@@ -42,20 +42,6 @@
 */
 	$application_folder = "application";
 
-
-/*
-|---------------------------------------------------------------
-| Default Controller Data Assignment
-|---------------------------------------------------------------
-|
-| If you need any data passed by default to your controllers you
-| can use this variable.  When a controller class is instantiated
-| this data will be passed to the controller constructor.
-|
-*/
-	$assign_to_controller = NULL;
-
-
 /*
 |===============================================================
 | END OF USER CONFIGURABLE SETTINGS
diff --git a/system/codeigniter/CodeIgniter.php b/system/codeigniter/CodeIgniter.php
index 1b38f27..39d07b0 100644
--- a/system/codeigniter/CodeIgniter.php
+++ b/system/codeigniter/CodeIgniter.php
@@ -1 +1 @@
-<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');/** * CodeIgniter * * An open source application development framework for PHP 4.3.2 or newer * * @package		CodeIgniter * @author		Rick Ellis * @copyright	Copyright (c) 2006, EllisLab, Inc. * @license		http://www.codeigniter.com/user_guide/license.html * @link		http://www.codeigniter.com * @since		Version 1.0 * @filesource */// ------------------------------------------------------------------------/** * System Front Controller * * Loads the base classes and executes the request. * * @package		CodeIgniter * @subpackage	codeigniter * @category	Front-controller * @author		Rick Ellis * @link		http://www.codeigniter.com/user_guide/ */// CI Versiondefine('CI_VERSION',	'1.5.5');/* * ------------------------------------------------------ *  Load the global functions * ------------------------------------------------------ */require(BASEPATH.'codeigniter/Common'.EXT);/* * ------------------------------------------------------ *  Load the compatibility override functions * ------------------------------------------------------ */require(BASEPATH.'codeigniter/Compat'.EXT);	/* * ------------------------------------------------------ *  Define a custom error handler so we can log PHP errors * ------------------------------------------------------ */set_error_handler('_exception_handler');set_magic_quotes_runtime(0); // Kill magic quotes/* * ------------------------------------------------------ *  Start the timer... tick tock tick tock... * ------------------------------------------------------ */$BM =& load_class('Benchmark');$BM->mark('total_execution_time_start');$BM->mark('loading_time_base_classes_start');/* * ------------------------------------------------------ *  Instantiate the hooks class * ------------------------------------------------------ */$EXT =& load_class('Hooks');/* * ------------------------------------------------------ *  Is there a "pre_system" hook? * ------------------------------------------------------ */$EXT->_call_hook('pre_system');/* * ------------------------------------------------------ *  Instantiate the base classes * ------------------------------------------------------ */$CFG =& load_class('Config');$URI =& load_class('URI');$RTR =& load_class('Router');$OUT =& load_class('Output');/* * ------------------------------------------------------ *	Is there a valid cache file?  If so, we're done... * ------------------------------------------------------ */if ($EXT->_call_hook('cache_override') === FALSE){	if ($OUT->_display_cache($CFG, $RTR) == TRUE)	{		exit;	}}/* * ------------------------------------------------------ *  Load the remaining base classes * ------------------------------------------------------ */$IN		=& load_class('Input');$LANG	=& load_class('Language');/* * ------------------------------------------------------ *  Load the app controller and local controller * ------------------------------------------------------ * *  Note: Due to the poor object handling in PHP 4 we'll *  conditionally load different versions of the base *  class.  Retaining PHP 4 compatibility requires a bit of a hack. * *  Note: The Loader class needs to be included first * */if (floor(phpversion()) < 5){	load_class('Loader', FALSE);	require(BASEPATH.'codeigniter/Base4'.EXT);}else{	require(BASEPATH.'codeigniter/Base5'.EXT);}// Load the base controller classload_class('Controller', FALSE);// Load the local application controller// Note: The Router class automatically validates the controller path.  If this include fails it // means that the default controller in the Routes.php file is not resolving to something valid.if ( ! file_exists(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().EXT)){	show_error('Unable to load your default controller.  Please make sure the controller specified in your Routes.php file is valid.');}include(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().EXT);// Set a mark point for benchmarking$BM->mark('loading_time_base_classes_end');/* * ------------------------------------------------------ *  Security check * ------------------------------------------------------ * *  None of the functions in the app controller or the *  loader class can be called via the URI, nor can *  controller functions that begin with an underscore */$class  = $RTR->fetch_class();$method = $RTR->fetch_method();if ( ! class_exists($class)	OR $method == 'controller'	OR substr($method, 0, 1) == '_'	OR in_array($method, get_class_methods('Controller'), TRUE)	){	show_404();}/* * ------------------------------------------------------ *  Is there a "pre_controller" hook? * ------------------------------------------------------ */$EXT->_call_hook('pre_controller');/* * ------------------------------------------------------ *  Instantiate the controller and call requested method * ------------------------------------------------------ */// Mark a start point so we can benchmark the controller$BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_start');// Instantiate the Controller and pass any global data that might exist$assign_to_controller = ( ! isset($assign_to_controller)) ? NULL : $assign_to_controller;$CI = new $class($assign_to_controller);unset($assign_to_controller);// Is this a scaffolding request?if ($RTR->scaffolding_request === TRUE){	if ($EXT->_call_hook('scaffolding_override') === FALSE)	{		$CI->_ci_scaffolding();	}}else{	/*	 * ------------------------------------------------------	 *  Is there a "post_controller_constructor" hook?	 * ------------------------------------------------------	 */	$EXT->_call_hook('post_controller_constructor');		// Is there a "remap" function?	if (method_exists($CI, '_remap'))	{		$CI->_remap($method);	}	else	{		if ( ! method_exists($CI, $method))		{			show_404();		}		// Call the requested method.		// Any URI segments present (besides the class/function) will be passed to the method for convenience				call_user_func_array(array(&$CI, $method), array_slice($URI->rsegments, (($RTR->fetch_directory() == '') ? 2 : 3)));			}}// Mark a benchmark end point$BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_end');/* * ------------------------------------------------------ *  Is there a "post_controller" hook? * ------------------------------------------------------ */$EXT->_call_hook('post_controller');/* * ------------------------------------------------------ *  Send the final rendered output to the browser * ------------------------------------------------------ */if ($EXT->_call_hook('display_override') === FALSE){	$OUT->_display();}/* * ------------------------------------------------------ *  Is there a "post_system" hook? * ------------------------------------------------------ */$EXT->_call_hook('post_system');/* * ------------------------------------------------------ *  Close the DB connection if one exists * ------------------------------------------------------ */if (class_exists('CI_DB') AND isset($CI->db)){	$CI->db->close();}?>
\ No newline at end of file
+<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');/** * CodeIgniter * * An open source application development framework for PHP 4.3.2 or newer * * @package		CodeIgniter * @author		Rick Ellis * @copyright	Copyright (c) 2006, EllisLab, Inc. * @license		http://www.codeigniter.com/user_guide/license.html * @link		http://www.codeigniter.com * @since		Version 1.0 * @filesource */// ------------------------------------------------------------------------/** * System Front Controller * * Loads the base classes and executes the request. * * @package		CodeIgniter * @subpackage	codeigniter * @category	Front-controller * @author		Rick Ellis * @link		http://www.codeigniter.com/user_guide/ */// CI Versiondefine('CI_VERSION',	'1.5.5');/* * ------------------------------------------------------ *  Load the global functions * ------------------------------------------------------ */require(BASEPATH.'codeigniter/Common'.EXT);/* * ------------------------------------------------------ *  Load the compatibility override functions * ------------------------------------------------------ */require(BASEPATH.'codeigniter/Compat'.EXT);	/* * ------------------------------------------------------ *  Define a custom error handler so we can log PHP errors * ------------------------------------------------------ */set_error_handler('_exception_handler');set_magic_quotes_runtime(0); // Kill magic quotes/* * ------------------------------------------------------ *  Start the timer... tick tock tick tock... * ------------------------------------------------------ */$BM =& load_class('Benchmark');$BM->mark('total_execution_time_start');$BM->mark('loading_time_base_classes_start');/* * ------------------------------------------------------ *  Instantiate the hooks class * ------------------------------------------------------ */$EXT =& load_class('Hooks');/* * ------------------------------------------------------ *  Is there a "pre_system" hook? * ------------------------------------------------------ */$EXT->_call_hook('pre_system');/* * ------------------------------------------------------ *  Instantiate the base classes * ------------------------------------------------------ */$CFG =& load_class('Config');$URI =& load_class('URI');$RTR =& load_class('Router');$OUT =& load_class('Output');/* * ------------------------------------------------------ *	Is there a valid cache file?  If so, we're done... * ------------------------------------------------------ */if ($EXT->_call_hook('cache_override') === FALSE){	if ($OUT->_display_cache($CFG, $RTR) == TRUE)	{		exit;	}}/* * ------------------------------------------------------ *  Load the remaining base classes * ------------------------------------------------------ */$IN		=& load_class('Input');$LANG	=& load_class('Language');/* * ------------------------------------------------------ *  Load the app controller and local controller * ------------------------------------------------------ * *  Note: Due to the poor object handling in PHP 4 we'll *  conditionally load different versions of the base *  class.  Retaining PHP 4 compatibility requires a bit of a hack. * *  Note: The Loader class needs to be included first * */if (floor(phpversion()) < 5){	load_class('Loader', FALSE);	require(BASEPATH.'codeigniter/Base4'.EXT);}else{	require(BASEPATH.'codeigniter/Base5'.EXT);}// Load the base controller classload_class('Controller', FALSE);// Load the local application controller// Note: The Router class automatically validates the controller path.  If this include fails it // means that the default controller in the Routes.php file is not resolving to something valid.if ( ! file_exists(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().EXT)){	show_error('Unable to load your default controller.  Please make sure the controller specified in your Routes.php file is valid.');}include(APPPATH.'controllers/'.$RTR->fetch_directory().$RTR->fetch_class().EXT);// Set a mark point for benchmarking$BM->mark('loading_time_base_classes_end');/* * ------------------------------------------------------ *  Security check * ------------------------------------------------------ * *  None of the functions in the app controller or the *  loader class can be called via the URI, nor can *  controller functions that begin with an underscore */$class  = $RTR->fetch_class();$method = $RTR->fetch_method();if ( ! class_exists($class)	OR $method == 'controller'	OR substr($method, 0, 1) == '_'	OR in_array($method, get_class_methods('Controller'), TRUE)	){	show_404();}/* * ------------------------------------------------------ *  Is there a "pre_controller" hook? * ------------------------------------------------------ */$EXT->_call_hook('pre_controller');/* * ------------------------------------------------------ *  Instantiate the controller and call requested method * ------------------------------------------------------ */// Mark a start point so we can benchmark the controller$BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_start');$CI = new $class();// Is this a scaffolding request?if ($RTR->scaffolding_request === TRUE){	if ($EXT->_call_hook('scaffolding_override') === FALSE)	{		$CI->_ci_scaffolding();	}}else{	/*	 * ------------------------------------------------------	 *  Is there a "post_controller_constructor" hook?	 * ------------------------------------------------------	 */	$EXT->_call_hook('post_controller_constructor');		// Is there a "remap" function?	if (method_exists($CI, '_remap'))	{		$CI->_remap($method);	}	else	{		if ( ! method_exists($CI, $method))		{			show_404();		}		// Call the requested method.		// Any URI segments present (besides the class/function) will be passed to the method for convenience				call_user_func_array(array(&$CI, $method), array_slice($URI->rsegments, (($RTR->fetch_directory() == '') ? 2 : 3)));			}}// Mark a benchmark end point$BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_end');/* * ------------------------------------------------------ *  Is there a "post_controller" hook? * ------------------------------------------------------ */$EXT->_call_hook('post_controller');/* * ------------------------------------------------------ *  Send the final rendered output to the browser * ------------------------------------------------------ */if ($EXT->_call_hook('display_override') === FALSE){	$OUT->_display();}/* * ------------------------------------------------------ *  Is there a "post_system" hook? * ------------------------------------------------------ */$EXT->_call_hook('post_system');/* * ------------------------------------------------------ *  Close the DB connection if one exists * ------------------------------------------------------ */if (class_exists('CI_DB') AND isset($CI->db)){	$CI->db->close();}?>
\ No newline at end of file
diff --git a/user_guide/changelog.html b/user_guide/changelog.html
index 3b6a322..ab93381 100644
--- a/user_guide/changelog.html
+++ b/user_guide/changelog.html
@@ -63,7 +63,6 @@
 	<li>Added Flashdata variables, session_id regeneration and configurable session update   times to the <a href="./libraries/sessions.html">Session class.</a></li>
 	<li>Added the ability to <a href="./general/autoloader.html">auto-load</a> <a href="./general/models.html">Models</a></li>
 	<li>Added $this->DB->save_queries variable to DB driver, enabling queries to get saved or not. Previously they were always saved.</li>
-	<li>Added <dfn>$assign_to_controller</dfn> variable in the main <kbd>index.php</kbd> file.  Anything that this variable contains will be passed automatically to a controller constructor when initialized.</li>
 	<li>Reorganized the URI and Routes classes for better clarity.</li>
     <li>Javascript Calendar plugin now uses the months and days from the calendar language file, instead of hard-coded values, internationalizing it.</li>
     <li>Added <a href="./database/forge.html">DBForge</a> to the database tools.</li>
